package com.ray.mapper;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.ibatis.annotations.Param;

import com.ray.bean.DutyBean;
import com.ray.bean.OrderBean;
import com.ray.bean.OrderColorBean;
import com.ray.bean.PermissionBean;
import com.ray.bean.ReportBean;
import com.ray.bean.RoleBean;
import com.ray.bean.UserBean;
import com.ray.bean.WorkshopProductionCycleBean;

public interface PermissionMapper {

	//添加权限
	void addPermission(@Param("permissionBean")PermissionBean permissionBean);

	//查询所有权限
	List<PermissionBean> querryAllPermission();
	
	//查询角色所有权限
	List<PermissionBean> querryPermissionByIdList(@Param("persissionId")List<String> persissionId,@Param("status") int status);

	//修改权限
	void updatePermission(@Param("permissionBean")PermissionBean permissionBean);

	//添加角色
	void addRole(@Param("roleBean")RoleBean roleBean);

	//获取所有角色
	List<RoleBean> querryAllrole(@Param("companyid")String companyid);

	//获取对应权限id
	List<String> getPermissionIdByRoleID(@Param("roleId")String roleId,@Param("status") int status);

	//查询角色没有的权限
	List<PermissionBean> querryNoPermissionByIdList(@Param("persissionId")List<String> permissionIdList,@Param("status") int i);

	//为角色添加权限
	void addRolePermission(@Param("roleId")String roleId, @Param("permissionIdArray")List<String> StringssionIdArray);

	//移除角色权限
	void removePermission(@Param("roleId")String roleId, @Param("permissionIdArray")List<String> titleLists);

	//获取用户拥有的角色
	List<RoleBean> getUserRole(Map map);
	
	//获取用户拥有的角色
	List<RoleBean> getUserNoRole(Map map);

	//添加用户角色
	void addUserRole(@Param("userId")String userId,@Param("roleIdlist") List<String> roleIdlist);

	//移除用户角色
	void removeUserRole(@Param("userId")String userId, @Param("roleIdlist") List<String> roleIdlist);

	//通过路径获取资源
	PermissionBean getPermissionByUrl(@Param("url")String url);

	//通过用户IS获取用户权限
	List<PermissionBean> getUserPermissionBeanByUserId(@Param("userId")String userId);
	
	//获取多有权限id
	List<String> getPermissionIdList();

	//删除角色
	void deleteRole(Map map);

	//修改角色信息
	void updateRole(Map map);

	/**
	 * 校验角色是否关联注册人
	 * @param roleId(角色id)
	 * @return
	 */
	List<String> checkRegisterUser(@Param("roleId")String roleId);

	/**
	 * 获取所有免费用户的权限
	 * @return
	 */
	List<String> getPermissionIdListNotPay();

	/**
	 * 
	 * @param string
	 */
	void setAdminPermission(@Param("companyName")String companyName);

	/**
	 * 设置默认审核权限
	 * @param map
	 */
	void setDefaultApprval(Map map);

	/**
	 * 获取拥有此角色的用户
	 * @param map
	 * @return
	 */
	List<UserBean> getRoleUser(Map map);

	/**
	 * 获取
	 * @param string
	 * @return
	 */
	Set<String> getCompanyHavePermissionId(@Param("company")String company);

	/**
	 * 删除公司权限
	 * @param map
	 */
	void deleteCompanyPermission(Map map);

	/**
	 * 添加公司权限
	 * @param map
	 * @return
	 */
	int addCompanyPermission(Map map);

}
